home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / cpu / h6280 / tblh6280.c < prev   
Text File  |  2000-02-29  |  21KB  |  345 lines

  1. /*****************************************************************************
  2.  
  3.     tblh6280.c
  4.  
  5.     Copyright (c) 1999 Bryan McPhail, mish@tendril.co.uk
  6.  
  7.     This source code is based (with permission!) on the 6502 emulator by
  8.     Juergen Buchmueller.  It is released as part of the Mame emulator project.
  9.     Let me know if you intend to use this code in any other project.
  10.  
  11. ******************************************************************************/
  12.  
  13. #undef    OP
  14. #define OP(nnn) INLINE void h6280_##nnn(void)
  15.  
  16. /*****************************************************************************
  17.  *****************************************************************************
  18.  *
  19.  *     Hu6280 opcodes
  20.  *
  21.  *****************************************************************************
  22.  * op      temp       cycles              rdmem      opc   wrmem   ******************/
  23. OP(000) {           h6280_ICount -= 8;          BRK;           } // 8 BRK
  24. OP(020) {           h6280_ICount -= 7; EA_ABS; JSR;           } // 7 JSR  ABS
  25. OP(040) {           h6280_ICount -= 7;          RTI;           } // 7 RTI
  26. OP(060) {           h6280_ICount -= 7;          RTS;           } // 7 RTS
  27. OP(080) { int tmp;                            BRA(1);       } // 4 BRA  REL
  28. OP(0a0) { int tmp; h6280_ICount -= 2; RD_IMM; LDY;           } // 2 LDY  IMM
  29. OP(0c0) { int tmp; h6280_ICount -= 2; RD_IMM; CPY;           } // 2 CPY  IMM
  30. OP(0e0) { int tmp; h6280_ICount -= 2; RD_IMM; CPX;           } // 2 CPX  IMM
  31.  
  32. OP(010) { int tmp;                              BPL;           } // 2/4 BPL  REL
  33. OP(030) { int tmp;                              BMI;           } // 2/4 BMI  REL
  34. OP(050) { int tmp;                              BVC;           } // 2/4 BVC  REL
  35. OP(070) { int tmp;                              BVS;           } // 2/4 BVS  REL
  36. OP(090) { int tmp;                              BCC;           } // 2/4 BCC  REL
  37. OP(0b0) { int tmp;                              BCS;           } // 2/4 BCS  REL
  38. OP(0d0) { int tmp;                              BNE;           } // 2/4 BNE  REL
  39. OP(0f0) { int tmp;                              BEQ;           } // 2/4 BEQ  REL
  40.  
  41. OP(001) { int tmp; h6280_ICount -= 7; RD_IDX; ORA;           } // 7 ORA  IDX
  42. OP(021) { int tmp; h6280_ICount -= 7; RD_IDX; AND;           } // 7 AND  IDX
  43. OP(041) { int tmp; h6280_ICount -= 7; RD_IDX; EOR;           } // 7 EOR  IDX
  44. OP(061) { int tmp; h6280_ICount -= 7; RD_IDX; ADC;           } // 7 ADC  IDX
  45. OP(081) { int tmp; h6280_ICount -= 7;         STA; WR_IDX; } // 7 STA  IDX
  46. OP(0a1) { int tmp; h6280_ICount -= 7; RD_IDX; LDA;           } // 7 LDA  IDX
  47. OP(0c1) { int tmp; h6280_ICount -= 7; RD_IDX; CMP;           } // 7 CMP  IDX
  48. OP(0e1) { int tmp; h6280_ICount -= 7; RD_IDX; SBC;           } // 7 SBC  IDX
  49.  
  50. OP(011) { int tmp; h6280_ICount -= 7; RD_IDY; ORA;           } // 7 ORA  IDY
  51. OP(031) { int tmp; h6280_ICount -= 7; RD_IDY; AND;           } // 7 AND  IDY
  52. OP(051) { int tmp; h6280_ICount -= 7; RD_IDY; EOR;           } // 7 EOR  IDY
  53. OP(071) { int tmp; h6280_ICount -= 7; RD_IDY; ADC;           } // 7 ADC  AZP
  54. OP(091) { int tmp; h6280_ICount -= 7;          STA; WR_IDY; } // 7 STA  IDY
  55. OP(0b1) { int tmp; h6280_ICount -= 7; RD_IDY; LDA;           } // 7 LDA  IDY
  56. OP(0d1) { int tmp; h6280_ICount -= 7; RD_IDY; CMP;           } // 7 CMP  IDY
  57. OP(0f1) { int tmp; h6280_ICount -= 7; RD_IDY; SBC;           } // 7 SBC  IDY
  58.  
  59. OP(002) { int tmp; h6280_ICount -= 3;          SXY;           } // 3 SXY
  60. OP(022) { int tmp; h6280_ICount -= 3;          SAX;           } // 3 SAX
  61. OP(042) { int tmp; h6280_ICount -= 3;          SAY;           } // 3 SAY
  62. OP(062) {           h6280_ICount -= 2;          CLA;           } // 2 CLA
  63. OP(082) {           h6280_ICount -= 2;          CLX;           } // 2 CLX
  64. OP(0a2) { int tmp; h6280_ICount -= 2; RD_IMM; LDX;           } // 2 LDX  IMM
  65. OP(0c2) {           h6280_ICount -= 2;          CLY;           } // 2 CLY
  66. OP(0e2) {                                      ILL;           } // 2 ???
  67.  
  68. OP(012) { int tmp; h6280_ICount -= 7; RD_ZPI; ORA;           } // 7 ORA  ZPI
  69. OP(032) { int tmp; h6280_ICount -= 7; RD_ZPI; AND;           } // 7 AND  ZPI
  70. OP(052) { int tmp; h6280_ICount -= 7; RD_ZPI; EOR;           } // 7 EOR  ZPI
  71. OP(072) { int tmp; h6280_ICount -= 7; RD_ZPI; ADC;           } // 7 ADC  ZPI
  72. OP(092) { int tmp; h6280_ICount -= 7;          STA; WR_ZPI; } // 7 STA  ZPI
  73. OP(0b2) { int tmp; h6280_ICount -= 7; RD_ZPI; LDA;           } // 7 LDA  ZPI
  74. OP(0d2) { int tmp; h6280_ICount -= 7; RD_ZPI; CMP;           } // 7 CMP  ZPI
  75. OP(0f2) { int tmp; h6280_ICount -= 7; RD_ZPI; SBC;           } // 7 SBC  ZPI
  76.  
  77. OP(003) { int tmp; h6280_ICount -= 4; RD_IMM; ST0;           } // 4 ST0  IMM
  78. OP(023) { int tmp; h6280_ICount -= 4; RD_IMM; ST2;           } // 4 ST2  IMM
  79. OP(043) { int tmp; h6280_ICount -= 4; RD_IMM; TMA;           } // 4 TMA
  80. OP(063) {                                      ILL;           } // 2 ???
  81. OP(083) { int tmp,tmp2; h6280_ICount -= 7; RD_IMM2; RD_ZPG; TST; } // 7 TST  IMM,ZPG
  82. OP(0a3) { int tmp,tmp2; h6280_ICount -= 7; RD_IMM2; RD_ZPX; TST; } // 7 TST  IMM,ZPX
  83. OP(0c3) { int to,from,length;                  TDD;           } // 6*l+17 TDD  XFER
  84. OP(0e3) { int to,from,length,alternate;       TIA;           } // 6*l+17 TIA  XFER
  85.  
  86. OP(013) { int tmp; h6280_ICount -= 4; RD_IMM; ST1;           } // 4 ST1
  87. OP(033) {                                     ILL;           } // 2 ???
  88. OP(053) { int tmp; h6280_ICount -= 5; RD_IMM; TAM;           } // 5 TAM  IMM
  89. OP(073) { int to,from,length;                  TII;           } // 6*l+17 TII  XFER
  90. OP(093) { int tmp,tmp2; h6280_ICount -= 8; RD_IMM2; RD_ABS; TST; } // 8 TST  IMM,ABS
  91. OP(0b3) { int tmp,tmp2; h6280_ICount -= 8; RD_IMM2; RD_ABX; TST; } // 8 TST  IMM,ABX
  92. OP(0d3) { int to,from,length;                  TIN;           } // 6*l+17 TIN  XFER
  93. OP(0f3) { int to,from,length,alternate;       TAI;           } // 6*l+17 TAI  XFER
  94.  
  95. OP(004) { int tmp; h6280_ICount -= 6; RD_ZPG; TSB; WB_EAZ; } // 6 TSB  ZPG
  96. OP(024) { int tmp; h6280_ICount -= 4; RD_ZPG; BIT;           } // 4 BIT  ZPG
  97. OP(044) { int tmp;                              BSR;           } // 8 BSR  REL
  98. OP(064) { int tmp; h6280_ICount -= 4;          STZ; WR_ZPG; } // 4 STZ  ZPG
  99. OP(084) { int tmp; h6280_ICount -= 4;          STY; WR_ZPG; } // 4 STY  ZPG
  100. OP(0a4) { int tmp; h6280_ICount -= 4; RD_ZPG; LDY;           } // 4 LDY  ZPG
  101. OP(0c4) { int tmp; h6280_ICount -= 4; RD_ZPG; CPY;           } // 4 CPY  ZPG
  102. OP(0e4) { int tmp; h6280_ICount -= 4; RD_ZPG; CPX;           } // 4 CPX  ZPG
  103.  
  104. OP(014) { int tmp; h6280_ICount -= 6; RD_ZPG; TRB; WB_EAZ; } // 6 TRB  ZPG
  105. OP(034) { int tmp; h6280_ICount -= 4; RD_ZPX; BIT;           } // 4 BIT  ZPX
  106. OP(054) {           h6280_ICount -= 2;                       } // 2 CSL
  107. OP(074) { int tmp; h6280_ICount -= 4;          STZ; WR_ZPX; } // 4 STZ  ZPX
  108. OP(094) { int tmp; h6280_ICount -= 4;          STY; WR_ZPX; } // 4 STY  ZPX
  109. OP(0b4) { int tmp; h6280_ICount -= 4; RD_ZPX; LDY;           } // 4 LDY  ZPX
  110. OP(0d4) {           h6280_ICount -= 2;                       } // 2 CSH
  111. OP(0f4) {           h6280_ICount -= 2;          SET;           } // 2 SET
  112.  
  113. OP(005) { int tmp; h6280_ICount -= 4; RD_ZPG; ORA;           } // 4 ORA  ZPG
  114. OP(025) { int tmp; h6280_ICount -= 4; RD_ZPG; AND;           } // 4 AND  ZPG
  115. OP(045) { int tmp; h6280_ICount -= 4; RD_ZPG; EOR;           } // 4 EOR  ZPG
  116. OP(065) { int tmp; h6280_ICount -= 4; RD_ZPG; ADC;           } // 4 ADC  ZPG
  117. OP(085) { int tmp; h6280_ICount -= 4;          STA; WR_ZPG; } // 4 STA  ZPG
  118. OP(0a5) { int tmp; h6280_ICount -= 4; RD_ZPG; LDA;           } // 4 LDA  ZPG
  119. OP(0c5) { int tmp; h6280_ICount -= 4; RD_ZPG; CMP;           } // 4 CMP  ZPG
  120. OP(0e5) { int tmp; h6280_ICount -= 4; RD_ZPG; SBC;           } // 4 SBC  ZPG
  121.  
  122. OP(015) { int tmp; h6280_ICount -= 4; RD_ZPX; ORA;           } // 4 ORA  ZPX
  123. OP(035) { int tmp; h6280_ICount -= 4; RD_ZPX; AND;           } // 4 AND  ZPX
  124. OP(055) { int tmp; h6280_ICount -= 4; RD_ZPX; EOR;           } // 4 EOR  ZPX
  125. OP(075) { int tmp; h6280_ICount -= 4; RD_ZPX; ADC;           } // 4 ADC  ZPX
  126. OP(095) { int tmp; h6280_ICount -= 4;          STA; WR_ZPX; } // 4 STA  ZPX
  127. OP(0b5) { int tmp; h6280_ICount -= 4; RD_ZPX; LDA;           } // 4 LDA  ZPX
  128. OP(0d5) { int tmp; h6280_ICount -= 4; RD_ZPX; CMP;           } // 4 CMP  ZPX
  129. OP(0f5) { int tmp; h6280_ICount -= 4; RD_ZPX; SBC;           } // 4 SBC  ZPX
  130.  
  131. OP(006) { int tmp; h6280_ICount -= 6; RD_ZPG; ASL; WB_EAZ; } // 6 ASL  ZPG
  132. OP(026) { int tmp; h6280_ICount -= 6; RD_ZPG; ROL; WB_EAZ; } // 6 ROL  ZPG
  133. OP(046) { int tmp; h6280_ICount -= 6; RD_ZPG; LSR; WB_EAZ; } // 6 LSR  ZPG
  134. OP(066) { int tmp; h6280_ICount -= 6; RD_ZPG; ROR; WB_EAZ; } // 6 ROR  ZPG
  135. OP(086) { int tmp; h6280_ICount -= 4;          STX; WR_ZPG; } // 4 STX  ZPG
  136. OP(0a6) { int tmp; h6280_ICount -= 4; RD_ZPG; LDX;           } // 4 LDX  ZPG
  137. OP(0c6) { int tmp; h6280_ICount -= 6; RD_ZPG; DEC; WB_EAZ; } // 6 DEC  ZPG
  138. OP(0e6) { int tmp; h6280_ICount -= 6; RD_ZPG; INC; WB_EAZ; } // 6 INC  ZPG
  139.  
  140. OP(016) { int tmp; h6280_ICount -= 6; RD_ZPX; ASL; WB_EAZ  } // 6 ASL  ZPX
  141. OP(036) { int tmp; h6280_ICount -= 6; RD_ZPX; ROL; WB_EAZ  } // 6 ROL  ZPX
  142. OP(056) { int tmp; h6280_ICount -= 6; RD_ZPX; LSR; WB_EAZ  } // 6 LSR  ZPX
  143. OP(076) { int tmp; h6280_ICount -= 6; RD_ZPX; ROR; WB_EAZ  } // 6 ROR  ZPX
  144. OP(096) { int tmp; h6280_ICount -= 4;          STX; WR_ZPY; } // 4 STX  ZPY
  145. OP(0b6) { int tmp; h6280_ICount -= 4; RD_ZPY; LDX;           } // 4 LDX  ZPY
  146. OP(0d6) { int tmp; h6280_ICount -= 6; RD_ZPX; DEC; WB_EAZ; } // 6 DEC  ZPX
  147. OP(0f6) { int tmp; h6280_ICount -= 6; RD_ZPX; INC; WB_EAZ; } // 6 INC  ZPX
  148.  
  149. OP(007) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(0);WB_EAZ;} // 7 RMB0 ZPG
  150. OP(027) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(2);WB_EAZ;} // 7 RMB2 ZPG
  151. OP(047) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(4);WB_EAZ;} // 7 RMB4 ZPG
  152. OP(067) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(6);WB_EAZ;} // 7 RMB6 ZPG
  153. OP(087) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(0);WB_EAZ;} // 7 SMB0 ZPG
  154. OP(0a7) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(2);WB_EAZ;} // 7 SMB2 ZPG
  155. OP(0c7) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(4);WB_EAZ;} // 7 SMB4 ZPG
  156. OP(0e7) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(6);WB_EAZ;} // 7 SMB6 ZPG
  157.  
  158. OP(017) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(1);WB_EAZ;} // 7 RMB1 ZPG
  159. OP(037) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(3);WB_EAZ;} // 7 RMB3 ZPG
  160. OP(057) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(5);WB_EAZ;} // 7 RMB5 ZPG
  161. OP(077) { int tmp; h6280_ICount -= 7; RD_ZPG; RMB(7);WB_EAZ;} // 7 RMB7 ZPG
  162. OP(097) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(1);WB_EAZ;} // 7 SMB1 ZPG
  163. OP(0b7) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(3);WB_EAZ;} // 7 SMB3 ZPG
  164. OP(0d7) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(5);WB_EAZ;} // 7 SMB5 ZPG
  165. OP(0f7) { int tmp; h6280_ICount -= 7; RD_ZPG; SMB(7);WB_EAZ;} // 7 SMB7 ZPG
  166.  
  167. OP(008) {           h6280_ICount -= 3;          PHP;           } // 3 PHP
  168. OP(028) {           h6280_ICount -= 4;          PLP;           } // 4 PLP
  169. OP(048) {           h6280_ICount -= 3;          PHA;           } // 3 PHA
  170. OP(068) {           h6280_ICount -= 4;          PLA;           } // 4 PLA
  171. OP(088) {           h6280_ICount -= 2;          DEY;           } // 2 DEY
  172. OP(0a8) {           h6280_ICount -= 2;          TAY;           } // 2 TAY
  173. OP(0c8) {           h6280_ICount -= 2;          INY;           } // 2 INY
  174. OP(0e8) {           h6280_ICount -= 2;          INX;           } // 2 INX
  175.  
  176. OP(018) {           h6280_ICount -= 2;          CLC;           } // 2 CLC
  177. OP(038) {           h6280_ICount -= 2;          SEC;           } // 2 SEC
  178. OP(058) {           h6280_ICount -= 2;          CLI;           } // 2 CLI
  179. OP(078) {           h6280_ICount -= 2;          SEI;           } // 2 SEI
  180. OP(098) {           h6280_ICount -= 2;          TYA;           } // 2 TYA
  181. OP(0b8) {           h6280_ICount -= 2;          CLV;           } // 2 CLV
  182. OP(0d8) {           h6280_ICount -= 2;          CLD;           } // 2 CLD
  183. OP(0f8) {           h6280_ICount -= 2;          SED;           } // 2 SED
  184.  
  185. OP(009) { int tmp; h6280_ICount -= 2; RD_IMM; ORA;           } // 2 ORA  IMM
  186. OP(029) { int tmp; h6280_ICount -= 2; RD_IMM; AND;           } // 2 AND  IMM
  187. OP(049) { int tmp; h6280_ICount -= 2; RD_IMM; EOR;           } // 2 EOR  IMM
  188. OP(069) { int tmp; h6280_ICount -= 2; RD_IMM; ADC;           } // 2 ADC  IMM
  189. OP(089) { int tmp; h6280_ICount -= 2; RD_IMM; BIT;           } // 2 BIT  IMM
  190. OP(0a9) { int tmp; h6280_ICount -= 2; RD_IMM; LDA;           } // 2 LDA  IMM
  191. OP(0c9) { int tmp; h6280_ICount -= 2; RD_IMM; CMP;           } // 2 CMP  IMM
  192. OP(0e9) { int tmp; h6280_ICount -= 2; RD_IMM; SBC;           } // 2 SBC  IMM
  193.  
  194. OP(019) { int tmp; h6280_ICount -= 5; RD_ABY; ORA;           } // 5 ORA  ABY
  195. OP(039) { int tmp; h6280_ICount -= 5; RD_ABY; AND;           } // 5 AND  ABY
  196. OP(059) { int tmp; h6280_ICount -= 5; RD_ABY; EOR;           } // 5 EOR  ABY
  197. OP(079) { int tmp; h6280_ICount -= 5; RD_ABY; ADC;           } // 5 ADC  ABY
  198. OP(099) { int tmp; h6280_ICount -= 5;          STA; WR_ABY; } // 5 STA  ABY
  199. OP(0b9) { int tmp; h6280_ICount -= 5; RD_ABY; LDA;           } // 5 LDA  ABY
  200. OP(0d9) { int tmp; h6280_ICount -= 5; RD_ABY; CMP;           } // 5 CMP  ABY
  201. OP(0f9) { int tmp; h6280_ICount -= 5; RD_ABY; SBC;           } // 5 SBC  ABY
  202.  
  203. OP(00a) { int tmp; h6280_ICount -= 2; RD_ACC; ASL; WB_ACC; } // 2 ASL  A
  204. OP(02a) { int tmp; h6280_ICount -= 2; RD_ACC; ROL; WB_ACC; } // 2 ROL  A
  205. OP(04a) { int tmp; h6280_ICount -= 2; RD_ACC; LSR; WB_ACC; } // 2 LSR  A
  206. OP(06a) { int tmp; h6280_ICount -= 2; RD_ACC; ROR; WB_ACC; } // 2 ROR  A
  207. OP(08a) {           h6280_ICount -= 2;          TXA;           } // 2 TXA
  208. OP(0aa) {           h6280_ICount -= 2;          TAX;           } // 2 TAX
  209. OP(0ca) {           h6280_ICount -= 2;          DEX;           } // 2 DEX
  210. OP(0ea) {           h6280_ICount -= 2;          NOP;           } // 2 NOP
  211.  
  212. OP(01a) {           h6280_ICount -= 2;          INA;           } // 2 INC  A
  213. OP(03a) {           h6280_ICount -= 2;          DEA;           } // 2 DEC  A
  214. OP(05a) {           h6280_ICount -= 3;          PHY;           } // 3 PHY
  215. OP(07a) {           h6280_ICount -= 4;          PLY;           } // 4 PLY
  216. OP(09a) {           h6280_ICount -= 2;          TXS;           } // 2 TXS
  217. OP(0ba) {           h6280_ICount -= 2;          TSX;           } // 2 TSX
  218. OP(0da) {           h6280_ICount -= 3;          PHX;           } // 3 PHX
  219. OP(0fa) {           h6280_ICount -= 4;          PLX;           } // 4 PLX
  220.  
  221. OP(00b) {                                      ILL;           } // 2 ???
  222. OP(02b) {                                      ILL;           } // 2 ???
  223. OP(04b) {                                      ILL;           } // 2 ???
  224. OP(06b) {                                      ILL;           } // 2 ???
  225. OP(08b) {                                      ILL;           } // 2 ???
  226. OP(0ab) {                                      ILL;           } // 2 ???
  227. OP(0cb) {                                      ILL;           } // 2 ???
  228. OP(0eb) {                                      ILL;           } // 2 ???
  229.  
  230. OP(01b) {                                      ILL;           } // 2 ???
  231. OP(03b) {                                      ILL;           } // 2 ???
  232. OP(05b) {                                      ILL;           } // 2 ???
  233. OP(07b) {                                      ILL;           } // 2 ???
  234. OP(09b) {                                      ILL;           } // 2 ???
  235. OP(0bb) {                                      ILL;           } // 2 ???
  236. OP(0db) {                                      ILL;           } // 2 ???
  237. OP(0fb) {                                      ILL;           } // 2 ???
  238.  
  239. OP(00c) { int tmp; h6280_ICount -= 7; RD_ABS; TSB; WB_EA;  } // 7 TSB  ABS
  240. OP(02c) { int tmp; h6280_ICount -= 5; RD_ABS; BIT;           } // 5 BIT  ABS
  241. OP(04c) {           h6280_ICount -= 4; EA_ABS; JMP;           } // 4 JMP  ABS
  242. OP(06c) { int tmp; h6280_ICount -= 7; EA_IND; JMP;           } // 7 JMP  IND
  243. OP(08c) { int tmp; h6280_ICount -= 5;          STY; WR_ABS; } // 5 STY  ABS
  244. OP(0ac) { int tmp; h6280_ICount -= 5; RD_ABS; LDY;           } // 5 LDY  ABS
  245. OP(0cc) { int tmp; h6280_ICount -= 5; RD_ABS; CPY;           } // 5 CPY  ABS
  246. OP(0ec) { int tmp; h6280_ICount -= 5; RD_ABS; CPX;           } // 5 CPX  ABS
  247.  
  248. OP(01c) { int tmp; h6280_ICount -= 7; RD_ABS; TRB; WB_EA;  } // 7 TRB  ABS
  249. OP(03c) { int tmp; h6280_ICount -= 5; RD_ABX; BIT;           } // 5 BIT  ABX
  250. OP(05c) {                                      ILL;           } // 2 ???
  251. OP(07c) { int tmp; h6280_ICount -= 7; EA_IAX; JMP;           } // 7 JMP  IAX
  252. OP(09c) { int tmp; h6280_ICount -= 5;          STZ; WR_ABS; } // 5 STZ  ABS
  253. OP(0bc) { int tmp; h6280_ICount -= 5; RD_ABX; LDY;           } // 5 LDY  ABX
  254. OP(0dc) {                                      ILL;           } // 2 ???
  255. OP(0fc) {                                      ILL;           } // 2 ???
  256.  
  257. OP(00d) { int tmp; h6280_ICount -= 5; RD_ABS; ORA;           } // 5 ORA  ABS
  258. OP(02d) { int tmp; h6280_ICount -= 5; RD_ABS; AND;           } // 4 AND  ABS
  259. OP(04d) { int tmp; h6280_ICount -= 5; RD_ABS; EOR;           } // 4 EOR  ABS
  260. OP(06d) { int tmp; h6280_ICount -= 5; RD_ABS; ADC;           } // 4 ADC  ABS
  261. OP(08d) { int tmp; h6280_ICount -= 5;          STA; WR_ABS; } // 4 STA  ABS
  262. OP(0ad) { int tmp; h6280_ICount -= 5; RD_ABS; LDA;           } // 4 LDA  ABS
  263. OP(0cd) { int tmp; h6280_ICount -= 5; RD_ABS; CMP;           } // 4 CMP  ABS
  264. OP(0ed) { int tmp; h6280_ICount -= 5; RD_ABS; SBC;           } // 4 SBC  ABS
  265.  
  266. OP(01d) { int tmp; h6280_ICount -= 5; RD_ABX; ORA;           } // 5 ORA  ABX
  267. OP(03d) { int tmp; h6280_ICount -= 5; RD_ABX; AND;           } // 4 AND  ABX
  268. OP(05d) { int tmp; h6280_ICount -= 5; RD_ABX; EOR;           } // 4 EOR  ABX
  269. OP(07d) { int tmp; h6280_ICount -= 5; RD_ABX; ADC;           } // 4 ADC  ABX
  270. OP(09d) { int tmp; h6280_ICount -= 5;          STA; WR_ABX; } // 5 STA  ABX
  271. OP(0bd) { int tmp; h6280_ICount -= 5; RD_ABX; LDA;           } // 5 LDA  ABX
  272. OP(0dd) { int tmp; h6280_ICount -= 5; RD_ABX; CMP;           } // 4 CMP  ABX
  273. OP(0fd) { int tmp; h6280_ICount -= 5; RD_ABX; SBC;           } // 4 SBC  ABX
  274.  
  275. OP(00e) { int tmp; h6280_ICount -= 7; RD_ABS; ASL; WB_EA;  } // 6 ASL  ABS
  276. OP(02e) { int tmp; h6280_ICount -= 7; RD_ABS; ROL; WB_EA;  } // 6 ROL  ABS
  277. OP(04e) { int tmp; h6280_ICount -= 7; RD_ABS; LSR; WB_EA;  } // 6 LSR  ABS
  278. OP(06e) { int tmp; h6280_ICount -= 7; RD_ABS; ROR; WB_EA;  } // 6 ROR  ABS
  279. OP(08e) { int tmp; h6280_ICount -= 5;          STX; WR_ABS; } // 4 STX  ABS
  280. OP(0ae) { int tmp; h6280_ICount -= 5; RD_ABS; LDX;           } // 5 LDX  ABS
  281. OP(0ce) { int tmp; h6280_ICount -= 7; RD_ABS; DEC; WB_EA;  } // 6 DEC  ABS
  282. OP(0ee) { int tmp; h6280_ICount -= 7; RD_ABS; INC; WB_EA;  } // 6 INC  ABS
  283.  
  284. OP(01e) { int tmp; h6280_ICount -= 7; RD_ABX; ASL; WB_EA;  } // 7 ASL  ABX
  285. OP(03e) { int tmp; h6280_ICount -= 7; RD_ABX; ROL; WB_EA;  } // 7 ROL  ABX
  286. OP(05e) { int tmp; h6280_ICount -= 7; RD_ABX; LSR; WB_EA;  } // 7 LSR  ABX
  287. OP(07e) { int tmp; h6280_ICount -= 7; RD_ABX; ROR; WB_EA;  } // 7 ROR  ABX
  288. OP(09e) { int tmp; h6280_ICount -= 5;          STZ; WR_ABX; } // 5 STZ  ABX
  289. OP(0be) { int tmp; h6280_ICount -= 5; RD_ABY; LDX;           } // 4 LDX  ABY
  290. OP(0de) { int tmp; h6280_ICount -= 7; RD_ABX; DEC; WB_EA;  } // 7 DEC  ABX
  291. OP(0fe) { int tmp; h6280_ICount -= 7; RD_ABX; INC; WB_EA;  } // 7 INC  ABX
  292.  
  293. OP(00f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(0);       } // 6/8 BBR0 ZPG,REL
  294. OP(02f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(2);       } // 6/8 BBR2 ZPG,REL
  295. OP(04f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(4);       } // 6/8 BBR4 ZPG,REL
  296. OP(06f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(6);       } // 6/8 BBR6 ZPG,REL
  297. OP(08f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(0);       } // 6/8 BBS0 ZPG,REL
  298. OP(0af) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(2);       } // 6/8 BBS2 ZPG,REL
  299. OP(0cf) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(4);       } // 6/8 BBS4 ZPG,REL
  300. OP(0ef) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(6);       } // 6/8 BBS6 ZPG,REL
  301.  
  302. OP(01f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(1);       } // 6/8 BBR1 ZPG,REL
  303. OP(03f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(3);       } // 6/8 BBR3 ZPG,REL
  304. OP(05f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(5);       } // 6/8 BBR5 ZPG,REL
  305. OP(07f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBR(7);       } // 6/8 BBR7 ZPG,REL
  306. OP(09f) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(1);       } // 6/8 BBS1 ZPG,REL
  307. OP(0bf) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(3);       } // 6/8 BBS3 ZPG,REL
  308. OP(0df) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(5);       } // 6/8 BBS5 ZPG,REL
  309. OP(0ff) { int tmp; h6280_ICount -= 4; RD_ZPG; BBS(7);       } // 6/8 BBS7 ZPG,REL
  310.  
  311. static void (*insnh6280[0x100])(void) = {
  312.     h6280_000,h6280_001,h6280_002,h6280_003,h6280_004,h6280_005,h6280_006,h6280_007,
  313.     h6280_008,h6280_009,h6280_00a,h6280_00b,h6280_00c,h6280_00d,h6280_00e,h6280_00f,
  314.     h6280_010,h6280_011,h6280_012,h6280_013,h6280_014,h6280_015,h6280_016,h6280_017,
  315.     h6280_018,h6280_019,h6280_01a,h6280_01b,h6280_01c,h6280_01d,h6280_01e,h6280_01f,
  316.     h6280_020,h6280_021,h6280_022,h6280_023,h6280_024,h6280_025,h6280_026,h6280_027,
  317.     h6280_028,h6280_029,h6280_02a,h6280_02b,h6280_02c,h6280_02d,h6280_02e,h6280_02f,
  318.     h6280_030,h6280_031,h6280_032,h6280_033,h6280_034,h6280_035,h6280_036,h6280_037,
  319.     h6280_038,h6280_039,h6280_03a,h6280_03b,h6280_03c,h6280_03d,h6280_03e,h6280_03f,
  320.     h6280_040,h6280_041,h6280_042,h6280_043,h6280_044,h6280_045,h6280_046,h6280_047,
  321.     h6280_048,h6280_049,h6280_04a,h6280_04b,h6280_04c,h6280_04d,h6280_04e,h6280_04f,
  322.     h6280_050,h6280_051,h6280_052,h6280_053,h6280_054,h6280_055,h6280_056,h6280_057,
  323.     h6280_058,h6280_059,h6280_05a,h6280_05b,h6280_05c,h6280_05d,h6280_05e,h6280_05f,
  324.     h6280_060,h6280_061,h6280_062,h6280_063,h6280_064,h6280_065,h6280_066,h6280_067,
  325.     h6280_068,h6280_069,h6280_06a,h6280_06b,h6280_06c,h6280_06d,h6280_06e,h6280_06f,
  326.     h6280_070,h6280_071,h6280_072,h6280_073,h6280_074,h6280_075,h6280_076,h6280_077,
  327.     h6280_078,h6280_079,h6280_07a,h6280_07b,h6280_07c,h6280_07d,h6280_07e,h6280_07f,
  328.     h6280_080,h6280_081,h6280_082,h6280_083,h6280_084,h6280_085,h6280_086,h6280_087,
  329.     h6280_088,h6280_089,h6280_08a,h6280_08b,h6280_08c,h6280_08d,h6280_08e,h6280_08f,
  330.     h6280_090,h6280_091,h6280_092,h6280_093,h6280_094,h6280_095,h6280_096,h6280_097,
  331.     h6280_098,h6280_099,h6280_09a,h6280_09b,h6280_09c,h6280_09d,h6280_09e,h6280_09f,
  332.     h6280_0a0,h6280_0a1,h6280_0a2,h6280_0a3,h6280_0a4,h6280_0a5,h6280_0a6,h6280_0a7,
  333.     h6280_0a8,h6280_0a9,h6280_0aa,h6280_0ab,h6280_0ac,h6280_0ad,h6280_0ae,h6280_0af,
  334.     h6280_0b0,h6280_0b1,h6280_0b2,h6280_0b3,h6280_0b4,h6280_0b5,h6280_0b6,h6280_0b7,
  335.     h6280_0b8,h6280_0b9,h6280_0ba,h6280_0bb,h6280_0bc,h6280_0bd,h6280_0be,h6280_0bf,
  336.     h6280_0c0,h6280_0c1,h6280_0c2,h6280_0c3,h6280_0c4,h6280_0c5,h6280_0c6,h6280_0c7,
  337.     h6280_0c8,h6280_0c9,h6280_0ca,h6280_0cb,h6280_0cc,h6280_0cd,h6280_0ce,h6280_0cf,
  338.     h6280_0d0,h6280_0d1,h6280_0d2,h6280_0d3,h6280_0d4,h6280_0d5,h6280_0d6,h6280_0d7,
  339.     h6280_0d8,h6280_0d9,h6280_0da,h6280_0db,h6280_0dc,h6280_0dd,h6280_0de,h6280_0df,
  340.     h6280_0e0,h6280_0e1,h6280_0e2,h6280_0e3,h6280_0e4,h6280_0e5,h6280_0e6,h6280_0e7,
  341.     h6280_0e8,h6280_0e9,h6280_0ea,h6280_0eb,h6280_0ec,h6280_0ed,h6280_0ee,h6280_0ef,
  342.     h6280_0f0,h6280_0f1,h6280_0f2,h6280_0f3,h6280_0f4,h6280_0f5,h6280_0f6,h6280_0f7,
  343.     h6280_0f8,h6280_0f9,h6280_0fa,h6280_0fb,h6280_0fc,h6280_0fd,h6280_0fe,h6280_0ff
  344. };
  345.